package view;

import java.awt.Toolkit;

import javax.swing.JTextField;
import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

/**
 * Classe implementant la methode de gestion du contenu textuel a l'insertion dans notre cas insertion
 * uniquement numerique
 * 
 * @author Ferreira Emmanuel & Richier cedric
 * 
 */
public class DigitLimited extends PlainDocument {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JTextField textField;

	public DigitLimited(JTextField textField) {
		super();
		this.textField = textField;
	}

	/**
	 * methode qui ins�re le contenu dans le document. En l'occurence le contenu
	 * ne peut etre que numerique.
	 */
	@Override
	public void insertString(int offset, String str, AttributeSet attr)
			throws BadLocationException {
		try {
			//replacement de la virgule par le point
			if (str.contains(",")) {
					str = str.replace(',', '.');
					System.out.println(str);
			}
			//on tente la recuperation de la valeur numerique
			Double.parseDouble(str);
			//si elle on reussi on peut ecrire le contenu
			super.insertString(offset, str, attr);
		} catch (NumberFormatException e) {
			//sinon on regarde juste s'il ne s'agit pas d'un point
			if (str.endsWith(".") && !this.textField.getText().contains(".")) {
				super.insertString(offset, str, attr);
			} else
				//sinon on emet un bruit d'erreur
				Toolkit.getDefaultToolkit().beep();
		}
	}
}
